package com.lyeducation.core.course;

import com.lyeducation.controllers.dto.CartDTO;
import com.lyeducation.controllers.dto.CourseDTO;
import com.lyeducation.core.base.BaseService;
import com.lyeducation.entities.course.CourseEntity;

import java.util.List;
import java.util.Map;

/**
 * 课程接口
 */
public interface CourseService extends BaseService<CourseEntity> {
    /**
     * 新增课程
     */
    CourseEntity addUpdCourse(CourseDTO courseDTO);

    /**
     * 课程列表
     */
    Map<String, Object> selCourseByPage(int pageNo, int pageSize);

    /**
     * 课程列表
     */
    Map<String, Object> courseEntityList(String categoryId, int pageNo, int pageSize);

    CourseEntity findOne(String courseId);

    /**
     * 课程详情
     */
    Map<String, Object> courseInfo(String courseId);

    /**
     * 修改课程
     */
    CourseEntity updateCourse(CourseDTO courseDTO);

    /**
     * 删除课程
     */
    boolean deleteCourse(String courseId);

    /**
     * 减库存
     */
    void decreaseStock(List<CartDTO> cartDTOList);

    /**
     * 加库存
     */
    void increaseStock(List<CartDTO> cartDTOList);

    /**
     * 课程搜索
     */
    Map<String, Object> searchCourse(CourseDTO courseDTO);

    /**
     * 热门课程
     */
    Map<String, Object> popularCourse(int pageNo, int pageSize);

    /**
     * 首页课程详情
     */
    CourseEntity courseInfoIndex(String courseId);

    /**
     * 设置是否热推
     */
    boolean isPopularCourse(String courseId, int popularCode);

    /**
     * 设置是否轮播
     */
    boolean isCarousel(String courseId, int carousel);

    /**
     * 获取轮播图
     */
    List carousel();

    /**
     * 获取课程类型 0为免费课程，1为会员专享，2为收费课程
     */
    List<CourseEntity> videoAccessRole(int videoAccessRole);
}
